The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for performing live operating system updates.
Updating or patching the kernel of an operation system generally requires rebooting the computing system. That is, the update or patch of the kernel is installed and then the computing system must be rebooted for the update or patch of the kernel to be loaded and executed on the computing system. This means that kernel fixes or updates cannot be applied to a system without restarting applications after experiencing some downtime to accomplish the rebooting operation.
While some “hot patch” capabilities have been made possible, these “hot patch” capabilities are greatly limited to only a few specific kernel extensions. Moreover, the changes included in the patch must be only to program text and/or local stack variables. This means that, with “hot patch” capabilities, there cannot be any additions, deletions, rearrangement, or other modifications of data definitions, such as string definitions or the like. Moreover, this means that there cannot be any modifications to a data structure's layout including those resulting from type changes. Furthermore, this means that there cannot be any new long constants generated for which the compiler creates static entries. There are many more detailed and difficult limitations to such “hot patch” capabilities with the above being merely illustrative of the severe limitations of the current “hot patch” capabilities for operating systems.
In addition to the above, most operating system updates include not only kernel changes, but also updates to shared libraries as well and this is another type of update that cannot be done without rebooting the computing system. This leaves users with the reality that almost all problem fixes, and kernel or operating system updates, cannot be done without rebooting and restarting their workloads on the respective applications that they utilize.